package valueobject

type Report struct {
	ID           uint
	Score        float32
	Status       uint
	ClassID      uint
	ExperimentID uint
	Student      string
	Content      string
}

var _ ReportVO = &Report{}

type ReportVO interface {
	GetID() uint
	GetClassID() uint
	GetExperimentID() uint
	GetStudent() string
	GetScore() float32
	GetContent() string
	GetStatus() uint

	HasStatus(uint) bool
}

func (r *Report) GetID() uint {
	return r.ID
}

func (r *Report) GetScore() float32 {
	return r.Score
}

func (r *Report) GetStatus() uint {
	return r.Status
}

func (r *Report) GetClassID() uint {
	return r.ClassID
}

func (r *Report) GetExperimentID() uint {
	return r.ExperimentID
}

func (r *Report) GetStudent() string {
	return r.Student
}

func (r *Report) GetContent() string {
	return r.Content
}

func (r *Report) HasStatus(status uint) bool {
	return r.Status&status != 0
}
